package com.bgds.sys.api.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.bgds.sys.api.bean.mars.dto.*;
import com.bgds.sys.api.bean.mars.vo.WaveDataVO;

import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;

/**
 * @Author: warm
 * @Description:
 * @Date: 2020/7/27 15:16
 * @Version: 1.0
 */
public interface DeTongService {


    /**
     * 获取token
     * @return
     */
    Map<String, String> getToken();

    /**
     * 设备树
     * @return
     */
    List<TreeDto> tree();

    /**
     * 根据 id 获取节点详情
     * @param id
     * @return
     */
    NodeDto listNodeById(String id);
    /**
     * 获取节点指标历史值
     * @param id
     * @param code
     * @param startTime
     * @param endTime
     * @param pageIndex
     * @param pageSize
     * @return
     */
    HistoryDataVo getHisData(String id, Integer code, String startTime, String endTime,
                             Integer pageIndex, Integer pageSize) ;

    /**
     * 获取节点指标数据量
     * @param id
     * @param code
     * @param startTime
     * @param endTime
     * @return
     */
    Integer getHisCount(String id, Integer code, String startTime, String endTime);

    /**
     * 获取波形数据
     * @param id
     * @param code
     * @param time
     * @param type
     * @return
     */
    List<WaveDataVO>  getWaveData(String id, Integer code, String time, Integer type);


    void getWaveData(String id, Integer code, String time, Integer type, HttpServletResponse response);

    /**
     * 趋势波形频谱
     * @param id
     * @param code
     * @param time
     * @return
     */
    void getSpectrumData(String id, Integer code, String time, HttpServletResponse response);


    /**
     * 获取包络图
     * @param id
     * @param code
     * @param time
     * @param centerFreq
     * @param filterWidth
     * @return
     */
    List<WaveDataVO> getEnvelopeData(String id, Integer code, String time, Double centerFreq, Double filterWidth);
    void getEnvelopeData(String id, Integer code, String time, Double centerFreq, Double filterWidth, HttpServletResponse response);

    /**
     * 分页获取报警事件
     * @param detailCount
     * @param pageIndex
     * @param pageSize
     * @return
     */
    IPage<AlarmEventDto> pageAlarmEventDto(Integer detailCount,Integer pageIndex,Integer pageSize);


    /**
     * 获取节点振动指标最新值
     * @param id
     * @return
     */
    List<DataTimeSerise> getLastVibData(String id);

    /**
     * 获取节点温度指标最新值
     * @param id
     * @return
     */
    List<DataTimeSerise> getLastTempData(String id);


    /**
     * 获取 任意值
     * @param id
     * @return
     */
    List<DataTimeSerise> getObject(String id,Integer code);

    /**
     * 分页获取单个设备报警事件
     * @param detailCount
     * @param startTime
     * @param endTime
     * @return
     */

    List<AlarmDeviceDto> pageAlarmByDeviceId(String deviceId, Integer detailCount, String startTime, String endTime);
}
